import textwrap
import time
import schedule
from datetime import datetime
import re
from bs4 import BeautifulSoup
import os
import sys

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASE_DIR)

from entitys.AiXinZhiJieEntity import AiXinZhiJie, add, getLinkMd5, getListByLinkMd5
from gloal.config import sendInfo, sendInfo1
import httpx

# from PIL import Image, ImageDraw, ImageFont

client = httpx.Client(http2=True, timeout=10000)
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36',
    'X-Requested-With': 'XMLHttpRequest',
}


def getContent():
    url = "https://www.aixinzhijie.com/flash";
    try:
        response = client.get(url, headers=headers)
        if response.status_code == 200:
            html_content = response.content
            # 使用BeautifulSoup解析网页内容
            soup = BeautifulSoup(html_content, 'html.parser')
            # 获取新闻列表
            items = soup.find_all('div', class_='list-item--wrap list-item--lg')
            for item in items:
                d = item.find('div', class_='flash-item')
                title = d.find('h6').find('a').text
                times = d.find('p', class_='flash-time').find('span').text
                href = d.find('p', class_='flash-time').find('a').get('href') if d.find('p',
                                                                                        class_='flash-time').find(
                    'a') is not None else None
                content = d.find('div', class_='ne-render-content')
                # print(title, times, href, content)
                AiXinZhiJie.title = title
                AiXinZhiJie.time = times
                if href is not None:
                    AiXinZhiJie.href = href
                link_md5 = href if href is not None else content

                # 去掉<div>标签
                modified_text = re.sub(r'<div[^>]*>|</div>', '', str(content))
                # 将内容中的<p>改为<br>
                modified_text = re.sub(r'<p>(.*?)</p>', r'\1\r\n\r\n', modified_text)
                modified_text = re.sub(r'(\d+)\.', r'\1、', modified_text)

                print(title, getLinkMd5(link_md5))
                AiXinZhiJie.linkMd5 = getLinkMd5(link_md5)
                AiXinZhiJie.content = modified_text
                AiXinZhiJie.create_time = time.time()
                lists = getListByLinkMd5(getLinkMd5(link_md5))

                # 如果lists为空，则保存数据
                if lists:
                    continue
                else:
                    add(AiXinZhiJie)
                    sendContent(title, modified_text, href)
    except Exception as e:
        print("网络错误: ", e)


def sendContent(title, content, href):
    # title = " 传和硕独拿 AI Pin 代工大单"
    # content = "据《科创板日报》援引台湾经济日报 1 月 24 日报道，业界传出，和硕独家拿下科技新品 AI Pin 代工大单。AI Pin 被业界誉为“继 iPhone 之后，下一个划时代革命性产品”，颇受业界瞩目。对于拿到 AI Pin 代工大单，和硕方面表示不针对单一客户响应，强调下半年将有许多新品上市。"
    # href = "https://www.chinastarmarket.cn/detail/1578720"
    # 当前日期，格式为：2021-08-01 12:01:21
    current_datetime = datetime.now()
    formatted_datetime = current_datetime.strftime("%Y-%m-%d %H:%M:%S")
    title = title.replace('AI 新智界', 'AI创业营')
    # sendText = '------' + title.replace('AI 新智界',
    #                                     'AI 创业营') + '(' + formatted_datetime + ')------\r\n\r\n' + modified_text
    sendContent = formatted_datetime + "\r\n\r\n" + content

    if title.find('要闻一览') > 0:
        sendInfo1(title, sendContent)
    # else:
    #     sendInfo(title, sendContent + "\n", href)


# def generateImage():
#     content = "1、 Yann LeCun：生成模型不适合处理视频，AI 得在抽象空间中进行预测\r\n\r\n2、 马斯克：Grok 1、5 有望在下个月发布，并将全面改进3、 彭博推出 AI " \
#               "驱动的财报电话会议摘要应用\r\n\r\n4、 中央财经大学发布龙马智碳大模型知识库\r\n\r\n5、 谷歌车载系统 Android Auto 引入 AI " \
#               "功能，旨在帮助驾驶者更安全地处理信息\r\n\r\n6、 甲骨文推出 OCI 生成式 AI 服务\r\n\r\n"
#     content = content.replace('\r\n', '\n')
#     # contents = content.split('\n')
#     # print(contents[0])
#
#     # 打开背景图
#     background_img = Image.open('../static/bg.png')
#
#     # 创建一个空白图像
#     image = Image.new("RGB", (400, 200), "white")
#
#     # 创建一个可以在图像上绘制的对象
#     draw = ImageDraw.Draw(background_img)
#
#     # 定义要添加的文字内容
#     text_content = content
#     text_color = (0, 0, 0)  # 文字颜色
#     # text_position = (80, 400, 550, 150)  # 文字位置
#     text_position = (80, 400)  # 文字位置
#
#     font = ImageFont.truetype("../static/font/wryh.ttf", 24)  # 字体和大小
#
#     # 自动换行并绘制文本
#     wrapped_text = textwrap.fill(text_content, width=28)
#     print(wrapped_text)
#     # 在背景图上添加文字内容
#     draw.text(text_position, wrapped_text, font=font, fill=text_color)
#
#     image = background_img.convert("RGB")
#
#     # 保存合成后的海报图像
#     image.save('../static/poster.jpg')


if __name__ == '__main__':
    # getContent()
    # 设置每分钟运行一次的调度器
    schedule.every(1).minutes.do(getContent)
    while True:
        # 等待并触发所有已安排的作业
        schedule.run_pending()
        time.sleep(1)
